import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

# 创建一个新的图形和坐标轴
fig, ax = plt.subplots()

# 隐藏坐标轴
ax.axis('off')

# 设置图形的标题
plt.title('文本情感分析分类过程', fontsize=16, fontweight='bold', loc='left', pad=20)

# 绘制LSTM层（用矩形模拟）
lstm_rect = Rectangle((0.1, 0.7), 0.2, 0.1, facecolor='lightblue', edgecolor='black')
ax.add_patch(lstm_rect)
plt.text(0.1 + 0.2 / 2, 0.7 + 0.1 / 2, 'LSTM层', ha='center', va='center', fontsize=12)

# 绘制箭头指向全连接层（用文本和线条模拟）
ax.annotate('', xy=(0.3, 0.75), xytext=(0.3, 0.6),
            arrowprops=dict(facecolor='black', shrink=0.05))

# 绘制全连接层（同样用矩形模拟）
dense_rect = Rectangle((0.1, 0.6), 0.2, 0.1, facecolor='orange', edgecolor='black')
ax.add_patch(dense_rect)
plt.text(0.1 + 0.2 / 2, 0.6 + 0.1 / 2, '全连接层', ha='center', va='center', fontsize=12)

# 绘制Sigmoid激活函数（用文本模拟）
sigmoid_text = plt.text(0.1, 0.5, 'Sigmoid激活函数\n映射到(0,1)区间', ha='left', va='center', fontsize=12)

# 绘制阈值判断（用文本和虚线模拟）
threshold_line = plt.axhline(y=0.4, xmin=0.1, xmax=0.3, color='gray', linestyle='--')
positive_text = plt.text(0.35, 0.4, '正面情感', ha='left', va='center', fontsize=12, color='green')
negative_text = plt.text(0.1, 0.3, '≤0.5', ha='right', va='center', fontsize=12)
negative_result_text = plt.text(0.35, 0.3, '负面情感', ha='left', va='center', fontsize=12, color='red')

# 绘制从Sigmoid到阈值判断的箭头（可选，因为文本已足够清晰）
# 注意：matplotlib的箭头绘制比较复杂，这里省略以简化示例

# 显示图形
plt.show()